package cn.myschool.admin.aop;

import cn.myschool.entity.Admin;
import org.aspectj.lang.ProceedingJoinPoint;

import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author oldliu
 * @since 1.0
 */
public class SchoolInterceptor {
    public Object doIntercept(ProceedingJoinPoint p){
        long start=System.nanoTime();
        System.out.println(p.getSignature().getName()+"方法名");
        System.out.println("方法执行于"+new Date());
        System.out.println("方法参数："+ Arrays.toString(p.getArgs()));
        //>
        //增加admin的时候，role大于1
        if(p.getSignature().getName().equals("add")){
            Admin admin=(Admin)p.getArgs()[0];
            if(admin.getRole()==1){
                //return 0;
                throw new RuntimeException("用户的级别不能是1");
            }
        }
        try {
            Object obj = p.proceed();//doFilter
            //System.out.println("方法 "+p.getSignature().getName()+"执行的结果是"+obj);
            if(p.getSignature().getName().equals("search")){
                List<Admin> list=(List<Admin>)obj;
                List<Admin> l2=list.stream().filter(a->!a.getName().equals("admin")).collect(Collectors.toList());
                return l2;
            }
            return obj;
        }catch (Throwable e){
            e.printStackTrace();
        }finally {
            long end=System.nanoTime();
            System.out.println(p.getSignature().getName()+"zhixinng 耗费时间"+(end-start)+"纳秒");
        }
        return  null;
    }
}
